package org.kk.linked;

import org.kk.Common;

/**
 * 在O(1) 时间删除链表节点
 * @author kk
 * @Date 2021/1/23
 */
public class DeleteNode {
    /**
     * 删除某个节点
     * @param head 头节点
     * @param deListNode 待删除结点
     */
    public static void deleteNode(Common.ListNode head, Common.ListNode deListNode){
        if(deListNode == null || head == null) return;
        if(head == deListNode) head = null;
        else{
            if(deListNode.next == null){
                Common.ListNode pointListNode = head;
                while (pointListNode.next.next != null) {
                    pointListNode = pointListNode.next;
                }
                pointListNode.next = null;
            }else{
                deListNode.val = deListNode.next.val;
                deListNode.next = deListNode.next.next;
            }
        }
    }
}
